package org.japo.java.swing.igu;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import org.japo.java.swing.beans.PanelFondo;
import org.japo.java.swing.listeners.GEA;

public class IGU extends JFrame {

    //Componentes del IGU
    private JLabel lblPrueba;
    private JComboBox<String> cbbFuente;

    //Valores predeterminados de Fuentes
    private final String FAMILIA = "Calibri";
    private final int ESTILO = Font.PLAIN;
    private final int TALLA = 40;

    //Recurso con la imagen de fondo del panel 
    private final String RES_PKG = "/org/japo/java/resources/img";
    private final String RES_IMG = "fondo.jpg";
    private final String RECURSO = RES_PKG + "/" + RES_IMG;
    
    //HOLA ESTO ES UNA PRUEBA PARA ACTUALIZAR EL PROYECTO
    //HOLA ESTO ES UNA PRUEBA PARA ACTUALIZAR EL PROYECTO

    //Texto de prueba
    private final String TEXTO = "Érase una vez Java";
    
    public IGU() {
        iniciarComponentes();
    }
    
    private void iniciarComponentes() {
        //Panel Principal
        JPanel pnlPrincipal = new JPanel();
        pnlPrincipal.setLayout(new GridLayout(2, 1));

        //Fuente de la etiqueta 
        Font f = new Font(FAMILIA, ESTILO, TALLA);

        //Borde de etiqueta 
        Border b = new BevelBorder(BevelBorder.LOWERED);

        //Etiqueta de prueba
        lblPrueba = new JLabel();
        lblPrueba.setFont(f);
        lblPrueba.setText(TEXTO);
        lblPrueba.setHorizontalAlignment(JLabel.CENTER);
        lblPrueba.setOpaque(true);
        lblPrueba.setBackground(Color.white);
        lblPrueba.setBorder(b);
        pnlPrincipal.add(lblPrueba);

        //Imagen de fondo
        URL urlImagen = getClass().getResource(RECURSO);
        Image i = new ImageIcon(urlImagen).getImage();

        //Panel de control
        JPanel pnlControl = new PanelFondo(i);
        FlowLayout f1 = new FlowLayout();
        f1.setVgap(30);
        pnlControl.setLayout(f1);
        pnlPrincipal.add(pnlControl);

        //Gestor de eventos de accion
        GEA gea = new GEA(this);

        //Obtener la lista de fuentes del sistema
        String[] listaFuentes = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

        //Selector de fuentes
        cbbFuente = new JComboBox(listaFuentes);
        cbbFuente.setSelectedItem(FAMILIA);
        cbbFuente.setPreferredSize(new Dimension(300, 30));
        cbbFuente.addActionListener(gea);
        pnlControl.add(cbbFuente);

        //Ventana Principal
        setTitle("Seleccion de fuente");
        setContentPane(pnlPrincipal);
        setResizable(false);
        setSize(400, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    }
    
    public void procesarFuente(Object o) {
        //Convierte el objeto en JComboBox
        JComboBox<String> lista = (JComboBox<String>) o;

        //Obtinene la familia seleccionada 
        String familia = (String) lista.getSelectedItem();

        //Genera una nueva fuente
        Font f = new Font(familia, ESTILO, TALLA);
        Font f2 = new Font (familia, Font.PLAIN, 14);
        

        //Aplica la fuente
        lblPrueba.setFont(f);
        cbbFuente.setFont(f2);
        
    }
}
